package utils

import (
	"net"
	"strconv"
	"strings"
	"time"
)

func GetPulicIP() string {
	conn, _ := net.Dial("udp", "8.8.8.8:80")
	defer conn.Close()
	localAddr := conn.LocalAddr().String()
	idx := strings.LastIndex(localAddr, ":")
	return localAddr[0:idx]
}

// 抛出异常
func Check(err error) {
	if err != nil {
		// 当在一个函数执行过程中调用 panic() 函数时，正常的函数执行流程将立即终止，但函数中
		// 之前使用 defer 关键字延迟执行的语句将正常展开执行，之后该函数将返回到调用函数，并导致
		// 逐层向上执行 panic 流程，直至所属的goroutine中所有正在执行的函数被终止。错误信息将被报
		// 告，包括在调用 panic() 函数时传入的参数，这个过程称为错误处理流程。
		panic(err)
	}
}

// 获取timestamp
func GetNow() string {
	return time.Now().Format("2006-01-02 15:04:05")
}

// 获取timestamp
func GetTimestamp() int64 {
	return time.Now().UnixNano() / 1000000
}

// 获取timestamp
func GetTimestampString() string {
	return strconv.FormatInt(GetTimestamp(), 10)
}
